package org.example.aop;



import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

//这是切面类，里面有增强的方法.
@Component   //将这个类交给spring管理
@Aspect   //这是一个切面
public class MyAspect {

    //切入点表达式. 它用来描述哪些类的哪些方法需要增强
    @Pointcut("execution(* com.zy.service.*.add(..))")
    public void a(){}

    @Pointcut("execution(* com.zy.service.*.delete(..))")
    public void b(){}

    @Pointcut("execution(* com.zy.service.*.find*(..))")
    public void c(){}

    @AfterReturning(value="a()", returning = "id")
    public void recordReturnValue(  int id  ){
        //记录 add()方法的返回值
        System.out.println("===================");
        System.out.println("添加成功，新产品 的id为:"+ id);
        System.out.println("===================");
    }


//    @Before("a()|| b()")
//    public void log(){
//        System.out.println("===================");
//        System.out.println("日志增强");
//        System.out.println(new Date() );
//        System.out.println("===================");
//    }
//
//    @Before("a()|| b()")
//    public void checkRight(){
//        System.out.println("===================");
//        System.out.println("权限校验增强");
//        Random r=new Random();
//        if(  r.nextInt( 2) == 0){
//            System.out.println("校验失败");
//            throw new RuntimeException("用户权限不足....");
//        }else{
//            System.out.println("校验通过");
//        }
//        System.out.println("===================");
//    }
}
